# Maintainer: Jan de Groot <jgc@archlinux.org>

# This package spans multiple repositories.
# Always build from cyrus-sasl/trunk and merge changes to libsasl/trunk.

#pkgbase=('cyrus-sasl')
#pkgname=('cyrus-sasl' 'cyrus-sasl-gssapi' 'cyrus-sasl-ldap' 'cyrus-sasl-sql')
pkgname=libsasl
pkgver=2.1.26
pkgrel=13
pkgdesc="Cyrus Simple Authentication Service Layer (SASL) library"
arch=('x86_64')
url="http://cyrusimap.web.cmu.edu/"
license=('custom')
options=('!makeflags')
makedepends=('postgresql-libs' 'libmariadbclient' 'libldap' 'krb5' 'openssl' 'sqlite')
source=(ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-${pkgver}.tar.gz
        cyrus-sasl-2.1.22-qa.patch
        cyrus-sasl-2.1.26-size_t.patch
        0010_maintainer_mode.patch
        0011_saslauthd_ac_prog_libtool.patch
        0025_ld_as_needed.patch
        0026_drop_krb5support_dependency.patch
        0030-dont_use_la_files_for_opening_plugins.patch
        saslauthd.service
        saslauthd.conf.d
        tmpfiles.conf
        CVE-2013-4122.patch
        cyrus-sasl-sql.patch
        cyrus-sasl-gssapi.patch
        cyrus-sasl-2.1.27-openssl-1.1.0.patch
        fix-pkgconfig.patch)
md5sums=('a7f4e5e559a0e37b3ffc438c9456e425'
         '79b8a5e8689989e2afd4b7bda595a7b1'
         'f45aa8c42b32e0569ab3d14a83485b37'
         'f45d8b60e8f74dd7f7c2ec1665fa602a'
         '9d93880514cb5ff5da969f1ceb64a661'
         '62bf892fe4d1df41ff748e91a1afaf67'
         'b7848957357e7c02d6490102be496bf9'
         '8e7106f32e495e9ade69014fd1b3352a'
         '3499dcd610ad1ad58e0faffde2aa7a23'
         '49219af5641150edec288a3fdb65e7c1'
         '45bb0192d2f188066240b9a66ee6365f'
         'c5f0ec88c584a75c14d7f402eaeed7ef'
         '82c0f66fdc5c1145eb48ea9116c27931'
         '0363b1a0337474a57b1f75f72fe88fa3'
         'c8a385bbca9bd79910c6bda3dd02845c'
         '409727695f9f28a3c43e340232462ff6')

prepare() {
  cd cyrus-sasl-$pkgver
  patch -Np1 -i ../cyrus-sasl-2.1.22-qa.patch
  patch -Np1 -i ../cyrus-sasl-2.1.26-size_t.patch
  patch -Np1 -i ../0010_maintainer_mode.patch
  patch -Np1 -i ../0011_saslauthd_ac_prog_libtool.patch
  patch -Np1 -i ../0025_ld_as_needed.patch
  patch -Np1 -i ../0026_drop_krb5support_dependency.patch
  patch -Np1 -i ../0030-dont_use_la_files_for_opening_plugins.patch
  patch -Np1 -i ../CVE-2013-4122.patch
  patch -Np0 -i ../cyrus-sasl-sql.patch
  patch -Np1 -i ../cyrus-sasl-gssapi.patch
  patch -Np1 -i ../cyrus-sasl-2.1.27-openssl-1.1.0.patch
  patch -Np1 -i ../fix-pkgconfig.patch

  sed -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' -e 's/libmysqlclient.a/libmysqlclient.so/' -i configure.in
}

build() {
  export CFLAGS="$CFLAGS -fPIC"
  cd cyrus-sasl-$pkgver

  rm -f config/config.guess config/config.sub 
  rm -f config/ltconfig config/ltmain.sh config/libtool.m4
  rm -fr autom4te.cache
  libtoolize -c
  aclocal -I config -I cmulocal
  automake -a -c
  autoheader
  autoconf

  pushd saslauthd
  rm -f config/config.guess config/config.sub 
  rm -f config/ltconfig config/ltmain.sh config/libtool.m4
  rm -fr autom4te.cache
  libtoolize -c
  aclocal -I config -I ../cmulocal -I ../config
  automake -a -c
  autoheader
  autoconf
  popd

  ./configure --prefix=/usr \
      --sbin=/usr/bin \
      --mandir=/usr/share/man \
      --infodir=/usr/share/info \
      --disable-static \
      --enable-shared \
      --enable-alwaystrue \
      --enable-checkapop \
      --enable-cram \
      --enable-digest \
      --disable-otp \
      --disable-srp \
      --disable-srp-setpass \
      --disable-krb4 \
      --enable-gssapi \
      --enable-auth-sasldb \
      --enable-plain \
      --enable-anon \
      --enable-login \
      --enable-ntlm \
      --disable-passdss \
      --enable-sql \
      --with-mysql=/usr \
      --with-pgsql=/usr/lib \
      --with-sqlite3=/usr/lib \
      --enable-ldapdb \
      --disable-macos-framework \
      --with-pam \
      --with-saslauthd=/var/run/saslauthd \
      --with-ldap \
      --with-dblib=gdbm \
      --with-configdir=/etc/sasl2:/etc/sasl:/usr/lib/sasl2 \
      --sysconfdir=/etc \
      --with-devrandom=/dev/urandom
  make
}

package_libsasl() {
  pkgdesc="Cyrus Simple Authentication Service Layer (SASL) Library"
  depends=('openssl')
  conflicts=('cyrus-sasl-plugins')

  cd cyrus-sasl-$pkgver
  make DESTDIR="$pkgdir" install-pkgconfigDATA
  for dir in include lib sasldb plugins utils; do
    pushd ${dir}
    make DESTDIR="${pkgdir}" install
    popd
  done
  rm -f "${pkgdir}"/usr/lib/sasl2/libsql.so*
  rm -f "${pkgdir}"/usr/lib/sasl2/libgssapiv2.so*
  rm -f "${pkgdir}"/usr/lib/sasl2/libldapdb.so*
  rm -f "${pkgdir}"/usr/lib/sasl2/libgs2.so*
  install -m755 -d "${pkgdir}/usr/share/licenses/libsasl"
  install -m644 COPYING "${pkgdir}/usr/share/licenses/libsasl/"
}

package_cyrus-sasl() {
  depends=("libsasl=${pkgver}" 'krb5')
  pkgdesc="Cyrus saslauthd SASL authentication daemon"
  backup=('etc/conf.d/saslauthd')

  cd cyrus-sasl-$pkgver/saslauthd
  make DESTDIR="${pkgdir}" install
  install -Dm644 "${srcdir}/saslauthd.conf.d" "${pkgdir}/etc/conf.d/saslauthd"
  install -Dm644 "${srcdir}/saslauthd.service" "${pkgdir}/usr/lib/systemd/system/saslauthd.service"
  install -Dm644 "${srcdir}/tmpfiles.conf" "${pkgdir}/usr/lib/tmpfiles.d/saslauthd.conf"

  install -m755 -d "${pkgdir}/usr/share/licenses/cyrus-sasl"
  ln -sf ../libsasl/COPYING "${pkgdir}/usr/share/licenses/cyrus-sasl/"
}

package_cyrus-sasl-gssapi() {
  pkgdesc="GSSAPI authentication mechanism for Cyrus SASL"
  depends=("libsasl=${pkgver}" 'krb5')
  replaces=('cyrus-sasl-plugins')

  cd cyrus-sasl-$pkgver/plugins
  install -m755 -d "${pkgdir}/usr/lib/sasl2"
  cp -a .libs/libgssapiv2.so* "${pkgdir}/usr/lib/sasl2/"
  cp -a .libs/libgs2.so* "${pkgdir}/usr/lib/sasl2/"

  install -m755 -d "${pkgdir}/usr/share/licenses/cyrus-sasl-gssapi"
  ln -sf ../libsasl/COPYING "${pkgdir}/usr/share/licenses/cyrus-sasl-gssapi/"
}

package_cyrus-sasl-ldap() {
  pkgdesc="ldapdb auxprop module for Cyrus SASL"
  depends=("libsasl=${pkgver}" 'libldap')
  replaces=('cyrus-sasl-plugins')

  cd cyrus-sasl-$pkgver/plugins
  install -m755 -d "${pkgdir}/usr/lib/sasl2"
  cp -a .libs/libldapdb.so* "${pkgdir}/usr/lib/sasl2/"

  install -m755 -d "${pkgdir}/usr/share/licenses/cyrus-sasl-ldap"
  ln -sf ../libsasl/COPYING "${pkgdir}/usr/share/licenses/cyrus-sasl-ldap/"
}

package_cyrus-sasl-sql() {
  pkgdesc="SQL auxprop module for Cyrus SASL"
  depends=("libsasl=${pkgver}" 'postgresql-libs' 'libmariadbclient' 'sqlite')
  replaces=('cyrus-sasl-plugins')

  cd cyrus-sasl-$pkgver/plugins
  install -m755 -d "${pkgdir}/usr/lib/sasl2"
  cp -a .libs/libsql.so* "${pkgdir}/usr/lib/sasl2/"

  install -m755 -d "${pkgdir}/usr/share/licenses/cyrus-sasl-sql"
  ln -sf ../libsasl/COPYING "${pkgdir}/usr/share/licenses/cyrus-sasl-sql/"
}
